package com.enjoy.redis.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;

import java.util.HashSet;
import java.util.Set;

@Configuration
public class RedisConfig {
    /**
     * cluster模式使用jedis
     * @return
     */
//    @Bean
//    public JedisCluster jedisCluster() {
//        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//        jedisPoolConfig.setMaxTotal(20);
//        jedisPoolConfig.setMaxIdle(10);
//        jedisPoolConfig.setMinIdle(5);
//        Set<HostAndPort> set = new HashSet<>();
//        set.add(new HostAndPort("192.168.126.139", 8001));
//        set.add(new HostAndPort("192.168.126.139", 8004));
//        set.add(new HostAndPort("192.168.126.140", 8002));
//        set.add(new HostAndPort("192.168.126.140", 8005));
//        set.add(new HostAndPort("192.168.126.141", 8003));
//        set.add(new HostAndPort("192.168.126.141", 8006));
//        return new JedisCluster(set, 6000, 5000, 10, "enjoy", jedisPoolConfig);
//    }


    /**
     * 单机版使用连接池
     *
     * @return
     */
//    @Bean
//    public JedisPool jedisPool() {
//        return new JedisPool("192.168.126.128", 6379);
//    }
//
//    @Bean
//    public Jedis jedis() {
//        return new Jedis("192.168.126.128", 6379);
//    }

    @Bean
    public JedisSentinelPool jedisSentinelPool() {
        JedisPoolConfig config = new JedisPoolConfig();

        // 设置最大连接总数
        config.setMaxTotal(100);
        // 设置最大空闲数
        config.setMaxIdle(50);
        // 设置最小空闲时间
        config.setMinIdle(8);
        // 设置最大等待时间
        config.setMinIdle(10000);
        // 在获取连接时检查有效性 默认false
        config.setTestOnBorrow(true);

        Set<String> sentinels = new HashSet<>();
        sentinels.add("10.17.4.154:26379");
        sentinels.add("10.17.4.155:26379");
        sentinels.add("10.17.4.156:26379");

        return new JedisSentinelPool("mymaster", sentinels, config,"bsoft123");
    }
}
